/*
PRTGen - A Parallel implementation of RainbowCrack using MPI.
Copyright (C) 2008 EliteQing <liinux@126.com>
This source code is based on:
RainbowCrack - a general propose implementation of Philippe
Oechslin's faster time-memory trade-off technique.
*/
#ifdef _WIN32
#pragma warning(disable : 4786)
#endif
#include "HashRoutine.h"
#include "HashAlgorithm.h"
//////////////////////////////////////////////////////////////////////
CHashRoutine::CHashRoutine()
{
// Notice: MIN_HASH_LEN <= nHashLen <= MAX_HASH_LEN
AddHashRoutine("lm", HashLM, 8);
AddHashRoutine("md5", HashMD5, 16);
AddHashRoutine("sha1", HashSHA1, 20);
}
CHashRoutine::~CHashRoutine()
{
}
void CHashRoutine::AddHashRoutine(string sHashRoutineName, HASHROUTINE pHashRoutine, int nHashLen)
{
vHashRoutineName.push_back(sHashRoutineName);
vHashRoutine.push_back(pHashRoutine);
vHashLen.push_back(nHashLen);
}
string CHashRoutine::GetAllHashRoutineName()
{
string sRet;
int i;
for (i = 0; i < (int)vHashRoutineName.size(); i++)
sRet += vHashRoutineName[i] + " ";
return sRet;
}
void CHashRoutine::GetHashRoutine(string sHashRoutineName, HASHROUTINE& pHashRoutine, int& nHashLen)
{int i;
for (i = 0; i < (int)vHashRoutineName.size(); i++)
{
if (sHashRoutineName == vHashRoutineName[i])
{
pHashRoutine = vHashRoutine[i];
nHashLen = vHashLen[i];
return;
}
}
pHashRoutine = NULL;
nHashLen = 0;
}